package org.example.design.singleton;

import org.example.util.Function;

/**
 * @author huangshen
 * @version 0
 * @description 懒汉式 - 单线程模式
 * @since 2022/1/29 19:05
 */
public class LazySingletonSingleThread {
    /**
     *  懒汉式 - 单线程模式（线程不安全）：
     *      优点： 起到了懒加载的效果
     *      缺点： 多线程下，一个线程进入了if判断语句块，如果还未往下执行，另一个线程也通过了判断语句
     *            这时候会产生多个实例。
     */
    private static LazySingletonSingleThread instance;

    private LazySingletonSingleThread(){}

    public static LazySingletonSingleThread getInstance() {
        if(Function.equalsNull(instance)){
            instance = new LazySingletonSingleThread();
        }
        return instance;
    }
}
